#pragma once

#include <iostream>

/** @class Savable
  * @brief Класс, предоставляющий общий интерфейс для сохраняемых объектов
  */
class Savable
{
public:
    /**
      * Загрузка объекта
      *
      * @param in поток, из которого необходимо считать объект
      * @return код ошибки или 0, если всё хорошо
      */
    virtual int load(std::istream& in) = 0;

    /**
      * Сохранение объекта
      *
      * @param out поток, в который необходимо сохранить объект
      * @return код ошибки или 0, если всё хорошо
      */
    virtual int save(std::ostream& out) const = 0;
};

